package cn.itcast.service;

import cn.itcast.entity.PageResult;
import cn.itcast.pojo.Menu;
import cn.itcast.pojo.User;

import java.util.List;

public interface UserService {

    /**
     * 找到用户  进行分页查询
     *
     * @param currentPage 当前页面
     * @param pageSize    页面大小
     * @param queryString 查询字符串
     * @return {@link PageResult}
     */
    PageResult findUser(Integer currentPage, Integer pageSize, String queryString);

    /**
     * 更新用户
     *
     * @param roleIds 角色id
     * @param user    用户
     */
    void updateUser(Integer[] roleIds, User user);

    /**
     * 添加用户
     *
     * @param roleIds 角色id
     * @param user    用户
     */
    void addUser(Integer[] roleIds, User user);

    /**
     * 查询单个用户信息
     *
     * @param userId 用户id
     * @return {@link User}
     */
    User findOneUser(Integer userId);

    /**
     * 删除用户通过id
     *
     * @param id id
     */
    boolean deleteUserById(Integer id);

    /**
     * 通过用户名查找用户信息  包括该用户所有的权限和角色信息
     *
     * @param username 用户名
     * @return {@link User}
     */
    User loadUserByUsername(String username);

    /**
     * 找到用户菜单的用户名
     *
     * @param username 用户名
     * @return {@link List<Menu>}
     */
    List<Menu> findMenuByUsername(String username);

    /**
     * 通过用户id找到角色id
     *
     * @param id id
     * @return {@link List<Integer>}
     */
    List<Integer> findRoleIdsByUserId(Integer id);
}
